#!/usr/bin/env python
# -*-coding: utf-8 -*-
# '''
# python 练习 发布话题和发布者节点
# 发布2个int型数据
# A    初始值0， 每秒+1
# B    初始值600，每秒-1
# '''
#=================程序开始=================#

import rospy
#倒入自定义的数据类型
from topic_demo.msg import int2



#======全局变量========
A=0  
B=600
#=====================
def talker():
    global A
    global B
    #Publisher 函数第一个参数是话题名称，第二个参数 数据类型，现在就是我们定义的msg 最后一个是缓冲区的大小
    #queue_size: None（不建议）  #这将设置为阻塞式同步收发模式！
    #queue_size: 0（不建议）#这将设置为无限缓冲区模式，很危险！
    #queue_size: 10 or more  #一般情况下，设为10 。queue_size太大了会导致数据延迟不同步。
    pub = rospy.Publisher('Topic_Sum2', int2, queue_size=10)      # Sum2 是话题名
    rospy.init_node('pytalker', anonymous=True)             # pytalker 是节点名    
    #更新频率是1hz，单位 秒
    rate = rospy.Rate(1) 
    i=0
    # rospy.is_shutdown() 用于检测程序是否退出，是否按Ctrl-C 或其他
    while not rospy.is_shutdown():
        #日志输出
        rospy.loginfo('%d秒: A=%s ,B= %s',i,A,B)
        #发布数据
        pub.publish(int2(A,B))
        #变量计算
        A+=1
        B-=1
        #每隔 1 秒循环一次    
        rate.sleep()

if __name__ == '__main__':
    talker()
